1. Field of the Invention
This invention relates to the field of communication between programs and more particularly, to a method of providing a system for sharing algorithms among programs.
2. Background Art
A computer system may include a number of programs available for use by a computer user. Communication between programs may be desired in certain instances. For example, it is often desired to share data between a spreadsheet program and a database management program. Thus, the spreadsheet program and database management program must be able to communicate with each other in a mutually understandable manner. In other instances, a program may require a function or functionality of another program.
In the prior art, inter-program communication is characterized by "data-sharing" schemes and techniques known as "cold links," "hot links" and "warm links." These data sharing schemes are directed to having data appear in two or more places in the same or different forms.
For example, it is possible on some computer systems to copy a picture from a drafting program and "paste" it into a word processing program. Once pasted into a word processing program document, no editing of the picture may be accomplished, since the word processing program does not include tools for editing graphics. In a cold link system, a link is created between the pasted picture and the drawing program. If a user is using the word processing program and accesses the document containing graphics, and if the PG,3 user desires to edit the graphic, the user performs some operation (such as "double clicking") on the graphics document. This activates the link and sends a message to the drawing program to launch itself so that the drawing program becomes active and the graphics can be edited.
In a hot link system, information can be shared among a number of programs. Whenever that information is altered in one program, all other instances of that information are altered in the other programs as well. For example, a user may copy data from a database management program and paste it into a spreadsheet program document for display. If the copied data is later altered in the database management program, the hot link causes the data of the spreadsheet program to be automatically altered in the same manner as the original information.
In warm links, information that is shared by more than one program is stored in a central location. Programs that share that information are "subscribers" to the information. Periodically, the subscribers poll the storage location, and thus have access to the updated version of the shared file. Alternatively, the "publisher" (program that alters the shared file), notifies subscribers when the shared file has been updated or changed.
One class of inter-program communication involves the request and provision of "services." A service is a function or functionality provided by one program for use by another, where the functionality has a well defined set of input types and a well defined set of output types. These services may include spell checkers, word definitions, synonyms, text editors, graphic editors, electronic mail, etc. In the prior art, services are program-dependent, that is, any available services must be provided by the program itself. In a few cases, services are provided by other programs, but only if the protocol for a communication between the service requestor and the service provider is determined in advance. Therefore, in the prior art, external service programs are specific to and dependent on host programs. Data sharing oriented inter-program communication schemes such as hot links, warm links, and cold links are not used to share provide services for use by programs in the prior art.
In a prior art multi-tasking environment, each application must have its own associated set of services. This results in duplication, for example, if all text editing applications require their own spell checkers. In addition, it is generally not possible to add new services to existing applications.
Data sharing communication schemes are not well suited to provide services to programs. It is therefore desired to provide an "algorithm-sharing" scheme so that programs requesting services can share the functionality of service providers. Formerly, algorithm sharing between programs could only take place if the service requestor "knew in advance" of the protocol for communication with a service provider. In other words, all inter-program communication is program-specific and the prior art does not provide a general solution for algorithm sharing.
Therefore, it is an object of the present invention to provide a method and apparatus for providing a system for algorithm sharing among programs.
It is another object of this invention to provide a system for services to be provided and used by programs.
It is another object of the present invention to provide a system for providing algorithm sharing among programs that utilizes standard data transfer schemes.